cargo.git
11 years agoTighten up the example for a build script
Alex Crichton [Mon, 17 Nov 2014 17:49:40 +0000 (09:49 -0800)]
Tighten up the example for a build script

11 years agoauto merge of #878 : alexcrichton/cargo/update-curl, r=brson
bors [Sat, 15 Nov 2014 07:08:58 +0000 (07:08 +0000)]
auto merge of #878 : alexcrichton/cargo/update-curl, r=brson

Closes #873

11 years agoUpdate curl-rust to fix SSL on windows
Alex Crichton [Fri, 14 Nov 2014 22:52:22 +0000 (14:52 -0800)]
Update curl-rust to fix SSL on windows

Closes #873

11 years agoauto merge of #865 : alexcrichton/cargo/no-more-name, r=brson
bors [Fri, 14 Nov 2014 23:33:33 +0000 (23:33 +0000)]
auto merge of #865 : alexcrichton/cargo/no-more-name, r=brson

With #843 and #839 coming around the bend soon, the original decision for
`--name` everywhere isn't making as much sense, for consistence this is renaming
these flags back to `--<target-name>` for the respective targets.

11 years agoauto merge of #861 : alexcrichton/cargo/issue-800, r=brson
bors [Fri, 14 Nov 2014 22:44:28 +0000 (22:44 +0000)]
auto merge of #861 : alexcrichton/cargo/issue-800, r=brson

This commit is an architectural change inside of Cargo itself in the way that it
handles the output format of builds. Previously when a build start, all existing
directories and files would be renamed to `old-foo` folders. The build would
then `rename` all files back into the right location as they were seen as fresh
and needed for the build.

The benefit of a system such as this is a rock-solid guarantee that the build
tree contains exactly what it would if we were to start the build from a totally
clean directory each time. There are some downsides, however:

* In #800, it was discovered that this method has an unfortunate interaction
  with Docker. Docker apparently will mount many filesystems which `rename` will
  not work across.

* I have seen countless flaky failures on windows due to an attempt to remove a
  file that was still in use somehow. I've never been able to truly track down
  why these failures are happening, however.

The new system for managing output files is to build up a list of all known
files at the start of a build, whitelist any necessary files when the build is
being prepared, and then wipe out all unknown files right before the build
begins. This is not quite as close to the guarantee as the benefits reaped
before because on the second build all build files will still be in their final
output locations, they may just get updated as part of the build as well. This
seems like an acceptable compromise, however.

Closes #800

11 years agoStop shuffling output files around so often
Alex Crichton [Thu, 13 Nov 2014 05:35:33 +0000 (21:35 -0800)]
Stop shuffling output files around so often

This commit is an architectural change inside of Cargo itself in the way that it
handles the output format of builds. Previously when a build start, all existing
directories and files would be renamed to `old-foo` folders. The build would
then `rename` all files back into the right location as they were seen as fresh
and needed for the build.

The benefit of a system such as this is a rock-solid guarantee that the build
tree contains exactly what it would if we were to start the build from a totally
clean directory each time. There are some downsides, however:

* In #800, it was discovered that this method has an unfortunate interaction
  with Docker. Docker apparently will mount many filesystems which `rename` will
  not work across.

* I have seen countless flaky failures on windows due to an attempt to remove a
  file that was still in use somehow. I've never been able to truly track down
  why these failures are happening, however.

The new system for managing output files is to build up a list of all known
files at the start of a build, whitelist any necessary files when the build is
being prepared, and then wipe out all unknown files right before the build
begins. This is not quite as close to the guarantee as the benefits reaped
before because on the second build all build files will still be in their final
output locations, they may just get updated as part of the build as well. This
seems like an acceptable compromise, however.

Closes #800

11 years agoauto merge of #839 : vhbit/cargo/lib-only, r=alexcrichton
bors [Fri, 14 Nov 2014 21:29:30 +0000 (21:29 +0000)]
auto merge of #839 : vhbit/cargo/lib-only, r=alexcrichton

Fixes #724

11 years agoBuild only lib from package
Valerii Hiora [Tue, 11 Nov 2014 12:59:06 +0000 (14:59 +0200)]
Build only lib from package

Fixes #724

11 years agoauto merge of #868 : IanConnolly/cargo/backtick_fix, r=alexcrichton
bors [Fri, 14 Nov 2014 17:14:33 +0000 (17:14 +0000)]
auto merge of #868 : IanConnolly/cargo/backtick_fix, r=alexcrichton

19:09 < ianconnolly> hey, i was browsing the cargo code, any particular reason why this string is mixed backticks + straight apostrophes?
                     https://github.com/rust-lang/cargo/blob/master/src/bin/cargo.rs#L157
19:10 < acrichto> ianconnolly: oh I think I missed that, it should probably just be `{}` like the rest of cargo

11 years agoMissed backtick fix
Ian Connolly [Thu, 13 Nov 2014 19:12:08 +0000 (19:12 +0000)]
Missed backtick fix

11 years agoauto merge of #866 : eerden/cargo/shell-completion-zsh, r=alexcrichton
bors [Fri, 14 Nov 2014 05:14:34 +0000 (05:14 +0000)]
auto merge of #866 : eerden/cargo/shell-completion-zsh, r=alexcrichton

Adds zsh autocomplete support for cargo command.

11 years agoauto merge of #870 : huonw/cargo/alex++, r=wycats
bors [Fri, 14 Nov 2014 03:44:36 +0000 (03:44 +0000)]
auto merge of #870 : huonw/cargo/alex++, r=wycats

11 years agoauto merge of #863 : alexcrichton/cargo/issue-855, r=huonw
bors [Fri, 14 Nov 2014 01:46:01 +0000 (01:46 +0000)]
auto merge of #863 : alexcrichton/cargo/issue-855, r=huonw

This provides a method of listing the files that will be in a package without
actually creating one.

Closes #855

11 years agoauto merge of #845 : jbranchaud/cargo/add-missing-semicolon-for-new-project-main...
bors [Fri, 14 Nov 2014 01:29:40 +0000 (01:29 +0000)]
auto merge of #845 : jbranchaud/cargo/add-missing-semicolon-for-new-project-main, r=alexcrichton

When you run `cargo new project-name --bin`, a project is generated by cargo
with a file, `src/main.rs`. This file has a main function with one line that
prints hello, world, but a semicolon is missing from the end of the
expression.

11 years agoImplement -l/--list for `cargo package`
Alex Crichton [Thu, 13 Nov 2014 06:28:30 +0000 (22:28 -0800)]
Implement -l/--list for `cargo package`

This provides a method of listing the files that will be in a package without
actually creating one.

Closes #855

11 years agoauto merge of #854 : alexcrichton/cargo/crates-io-dox, r=steveklabnik
bors [Thu, 13 Nov 2014 23:44:42 +0000 (23:44 +0000)]
auto merge of #854 : alexcrichton/cargo/crates-io-dox, r=steveklabnik

Rendered: http://alexcrichton.com/cargo/crates-io.html

cc @steveklabnik, @wycats

11 years agoAdd Alex to the authors.
Huon Wilson [Thu, 13 Nov 2014 23:08:17 +0000 (10:08 +1100)]
Add Alex to the authors.

11 years agoauto merge of #864 : tomaka/cargo/fix-814, r=alexcrichton
bors [Thu, 13 Nov 2014 22:45:53 +0000 (22:45 +0000)]
auto merge of #864 : tomaka/cargo/fix-814, r=alexcrichton

Close #814

Unfortunately I don't really know how I'd add a test for this.
In order to try compile a library then a binary, you need to successfully compile the library, which means that you'd need to pass a valid value instead of just `-l foo`

11 years agoauto merge of #862 : alexcrichton/cargo/issue-858, r=huonw
bors [Thu, 13 Nov 2014 22:14:45 +0000 (22:14 +0000)]
auto merge of #862 : alexcrichton/cargo/issue-858, r=huonw

Closes #858

11 years agoUpdate Makefile.in for installation
bar [Thu, 13 Nov 2014 19:36:27 +0000 (14:36 -0500)]
Update Makefile.in for installation

11 years agoauto merge of #842 : alexcrichton/cargo/issue-838, r=brson
bors [Thu, 13 Nov 2014 19:23:05 +0000 (19:23 +0000)]
auto merge of #842 : alexcrichton/cargo/issue-838, r=brson

A package can be required to be built for both the host and target architectures
in some cases. For example a crate could be a normal dependency and a build
dependency. Cargo specially handles this case with respect to the build script
to ensure that the build script is run once per output platform.

Cargo also has logic, however, to run the build script only once when the target
and host platforms are the same. In this case Cargo previously wasn't filling in
the local build script output cache for both the host and target platforms, just
the target platform. This commit remedies this situation by ensuring that cargo
populates both the host and target locations in the cache.

Closes #838

11 years agoauto merge of #859 : alexcrichton/cargo/issue-856, r=alexcrichton
bors [Thu, 13 Nov 2014 19:07:46 +0000 (19:07 +0000)]
auto merge of #859 : alexcrichton/cargo/issue-856, r=alexcrichton

I don't really expect all builders of cargo to be forced to use this rustc, and
I expect this to update frequently, but it will allow cargo PRs to land without
forcing a "put out the fires" fix for all nightly incompatibilities all at once.
This will allow rust upgrades to land separately and be reviewed separately.

Closes #856

11 years agoPin rustc to a date with known snapshots
Alex Crichton [Thu, 13 Nov 2014 00:05:33 +0000 (16:05 -0800)]
Pin rustc to a date with known snapshots

I don't really expect all builders of cargo to be forced to use this rustc, and
I expect this to update frequently, but it will allow cargo PRs to land without
forcing a "put out the fires" fix for all nightly incompatibilities all at once.
This will allow rust upgrades to land separately and be reviewed separately.

11 years agoAdd zsh completion
bar [Thu, 13 Nov 2014 06:50:03 +0000 (01:50 -0500)]
Add zsh completion

11 years agoRename --name flags to --<target-name>
Alex Crichton [Thu, 13 Nov 2014 17:37:09 +0000 (09:37 -0800)]
Rename --name flags to --<target-name>

With #843 and #839 coming around the bend soon, the original decision for
`--name` everywhere isn't making as much sense, for consistence this is renaming
these flags back to `--<target-name>` for the respective targets.

11 years ago-l flag no longer pass to binaries if there's a library in the package
Pierre Krieger [Thu, 13 Nov 2014 15:34:11 +0000 (16:34 +0100)]
-l flag no longer pass to binaries if there's a library in the package

11 years agoAdd documentation about crates.io usage
Alex Crichton [Wed, 12 Nov 2014 22:51:37 +0000 (14:51 -0800)]
Add documentation about crates.io usage

11 years agoImplement a command to list owners of a crate
Alex Crichton [Thu, 13 Nov 2014 06:15:41 +0000 (22:15 -0800)]
Implement a command to list owners of a crate

Closes #858

11 years agoauto merge of #844 : alexcrichton/cargo/less-registry, r=brson
bors [Thu, 13 Nov 2014 03:29:37 +0000 (03:29 +0000)]
auto merge of #844 : alexcrichton/cargo/less-registry, r=brson

Try to purge the word "registry" as much as possible in favor of just referring
to crates.io as "crates.io". This also enables the default index as being the
official rust-lang crates.io index.

11 years agoauto merge of #857 : alexcrichton/cargo/update, r=alexcrichton
bors [Thu, 13 Nov 2014 01:50:43 +0000 (01:50 +0000)]
auto merge of #857 : alexcrichton/cargo/update, r=alexcrichton

We don't want to use the bundled gcc and the bundling location has changed since when this was originally written.

11 years agoFix a panic when building with build scripts
Alex Crichton [Tue, 11 Nov 2014 19:59:31 +0000 (11:59 -0800)]
Fix a panic when building with build scripts

A package can be required to be built for both the host and target architectures
in some cases. For example a crate could be a normal dependency and a build
dependency. Cargo specially handles this case with respect to the build script
to ensure that the build script is run once per output platform.

Cargo also has logic, however, to run the build script only once when the target
and host platforms are the same. In this case Cargo previously wasn't filling in
the local build script output cache for both the host and target platforms, just
the target platform. This commit remedies this situation by ensuring that cargo
populates both the host and target locations in the cache.

Closes #838

11 years agoThe bundled gcc has moved locations
Alex Crichton [Thu, 13 Nov 2014 00:00:00 +0000 (16:00 -0800)]
The bundled gcc has moved locations

11 years agoFix OUT_DIR not being passed to rustdoc
Pierre Krieger [Wed, 12 Nov 2014 12:12:02 +0000 (13:12 +0100)]
Fix OUT_DIR not being passed to rustdoc

11 years agoAdd the semicolon missing from the generated main.rs contents.
jbranchaud [Wed, 12 Nov 2014 05:00:05 +0000 (23:00 -0600)]
Add the semicolon missing from the generated main.rs contents.

When you run `cargo new project-name --bin`, a project is generated by cargo
with a file, `src/main.rs`. This file has a main function with one line that
prints hello, world, but a semicolon is missing from the end of the
expression.

11 years agoauto merge of #817 : alexcrichton/cargo/build-cmd, r=brson
bors [Tue, 11 Nov 2014 22:44:53 +0000 (22:44 +0000)]
auto merge of #817 : alexcrichton/cargo/build-cmd, r=brson

This registers a new cargo snapshot as well as updates all dependencies to versions that are using build scripts. This means that overrides can now be used when looking for native libs for cargo!

This also modifies the behavior of `--enable-nightly` to add some extra configuration the buildbot needs to build cargo on CentOS.

11 years agoUpgrade all deps to using build scripts
Alex Crichton [Thu, 6 Nov 2014 17:17:34 +0000 (09:17 -0800)]
Upgrade all deps to using build scripts

11 years agoauto merge of #827 : DiamondLovesYou/cargo/master, r=alexcrichton
bors [Tue, 11 Nov 2014 22:29:36 +0000 (22:29 +0000)]
auto merge of #827 : DiamondLovesYou/cargo/master, r=alexcrichton

11 years agoDon't count custom compile scripts as targets.
Richard Diamond [Tue, 11 Nov 2014 20:51:27 +0000 (14:51 -0600)]
Don't count custom compile scripts as targets.

11 years agoUpdate the UI around using crates.io
Alex Crichton [Tue, 11 Nov 2014 20:24:50 +0000 (12:24 -0800)]
Update the UI around using crates.io

Try to purge the word "registry" as much as possible in favor of just referring
to crates.io as "crates.io". This also enables the default index as being the
official rust-lang crates.io index.

11 years agoauto merge of #840 : alexcrichton/cargo/new-docs, r=brson
bors [Tue, 11 Nov 2014 19:17:49 +0000 (19:17 +0000)]
auto merge of #840 : alexcrichton/cargo/new-docs, r=brson

Rendered version: http://alexcrichton.com/cargo/

Closes https://github.com/rust-lang/crates.io/issues/14

11 years agoauto merge of #829 : alexcrichton/cargo/less-paniks, r=brson
bors [Tue, 11 Nov 2014 18:59:12 +0000 (18:59 +0000)]
auto merge of #829 : alexcrichton/cargo/less-paniks, r=brson

Unused overrides previously led to a panic, and build cmd outputs were cached in the *host* location instead of the *target* location.

11 years agoTweak doc style to match crates.io
Alex Crichton [Fri, 24 Oct 2014 00:26:41 +0000 (17:26 -0700)]
Tweak doc style to match crates.io

11 years agoauto merge of #828 : alexcrichton/cargo/issue-821, r=brson
bors [Tue, 11 Nov 2014 04:59:34 +0000 (04:59 +0000)]
auto merge of #828 : alexcrichton/cargo/issue-821, r=brson

They don't have any! We also care more about the other targets regardless.

Closes #821

11 years agoCache build output in the target build directory
Alex Crichton [Mon, 10 Nov 2014 17:52:14 +0000 (09:52 -0800)]
Cache build output in the target build directory

Placing it in the host directory may end up later on down the road causing a
spurious recompilation when one isn't necessary. I couldn't currently think of a
test case for this, as I don't think that this affects correctness.

11 years agoauto merge of #816 : alexcrichton/cargo/issue-812, r=brson
bors [Tue, 11 Nov 2014 01:59:36 +0000 (01:59 +0000)]
auto merge of #816 : alexcrichton/cargo/issue-812, r=brson

Closes #812

11 years agoDon't panic on unused overrides
Alex Crichton [Mon, 10 Nov 2014 17:36:36 +0000 (09:36 -0800)]
Don't panic on unused overrides

This previously did a failing hashtable lookup when an `Option`-returning `get`
would suffice.

11 years agoDon't look at custom build targets for output locs
Alex Crichton [Mon, 10 Nov 2014 17:22:04 +0000 (09:22 -0800)]
Don't look at custom build targets for output locs

They don't have any! We also care more about the other targets regardless.

Closes #821

11 years agoauto merge of #826 : tomaka/cargo/update-links-readme, r=alexcrichton
bors [Mon, 10 Nov 2014 16:44:36 +0000 (16:44 +0000)]
auto merge of #826 : tomaka/cargo/update-links-readme, r=alexcrichton

11 years agoUpdate links to windows nightlies in the README
Pierre Krieger [Mon, 10 Nov 2014 12:44:28 +0000 (13:44 +0100)]
Update links to windows nightlies in the README

11 years agoauto merge of #823 : DiamondLovesYou/cargo/master, r=alexcrichton
bors [Sun, 9 Nov 2014 19:59:34 +0000 (19:59 +0000)]
auto merge of #823 : DiamondLovesYou/cargo/master, r=alexcrichton

11 years agoRespect Target target vs host exe suffix distinction.
Richard Diamond [Sun, 9 Nov 2014 02:56:49 +0000 (20:56 -0600)]
Respect Target target vs host exe suffix distinction.

11 years agoClarify the documentation on `cargo test`
Alex Crichton [Fri, 7 Nov 2014 21:40:36 +0000 (13:40 -0800)]
Clarify the documentation on `cargo test`

Closes #812

11 years agoauto merge of #815 : alexcrichton/cargo/another-fix-oh-by-wait-i-verified-this-one...
bors [Fri, 7 Nov 2014 21:15:52 +0000 (21:15 +0000)]
auto merge of #815 : alexcrichton/cargo/another-fix-oh-by-wait-i-verified-this-one-its-ok, r=alexcrichton

Previously the host/target requirement for packages was not correctly calculated
as dependency edges to build dependencies weren't traversed by accident.

11 years agoAnother fix for cross-compiled build scripts
Alex Crichton [Fri, 7 Nov 2014 20:59:44 +0000 (12:59 -0800)]
Another fix for cross-compiled build scripts

Previously the host/target requirement for packages was not correctly calculated
as dependency edges to build dependencies weren't traversed by accident.

11 years agoauto merge of #813 : alexcrichton/cargo/build-cmd-cross-compile, r=brson
bors [Fri, 7 Nov 2014 19:28:57 +0000 (19:28 +0000)]
auto merge of #813 : alexcrichton/cargo/build-cmd-cross-compile, r=brson

These commits contain a number of improvements to the usage of build scripts when cross compiling. A few erroneous assumptions were made to start out with, and this also fixes the long-standing bug of using build scripts in host packages (e.g. plugins and build dependencies).

11 years agoFix build scripts and double-compiled packages
Alex Crichton [Fri, 7 Nov 2014 19:09:59 +0000 (11:09 -0800)]
Fix build scripts and double-compiled packages

This commit fixes support for build scripts in packages which are compiled for
both the host and target architectures. The support was previously hindered by
the fact that the build script was always invoked precisely once for the target
architecture unconditionally.

This adds support for build scripts themselves to depend on build scripts, and
everything should "just work" if build scripts respect their environment
variables.

11 years agoFix cross compiling with a build script
Alex Crichton [Fri, 7 Nov 2014 17:25:25 +0000 (09:25 -0800)]
Fix cross compiling with a build script

Previously there was a mixup of where the build script was getting compiled into
as well as where the output was going to. This commit fixes the problems for
now, but still has room for improvement in the future.

Build scripts themselves are now unconditionally built into `target/build/..`
because they're compiled for the host platform. Their outputs are in
`target/$target/build/..` as expected.

11 years agoauto merge of #798 : alexcrichton/cargo/issue-777, r=brson
bors [Fri, 7 Nov 2014 16:52:47 +0000 (16:52 +0000)]
auto merge of #798 : alexcrichton/cargo/issue-777, r=brson

At the same time this commit renames the `.tar.gz` extension to `.crate`. This
helps our perception on Windows as we're not trying to leave them out in the
dark, and we'd also like the ability to modify the format later in the future.

Closes #777

11 years agoauto merge of #811 : alexcrichton/cargo/update, r=alexcrichton
bors [Fri, 7 Nov 2014 16:32:17 +0000 (16:32 +0000)]
auto merge of #811 : alexcrichton/cargo/update, r=alexcrichton

Need to land them all as one unit to actually pass the whole test suite.

11 years agoUpdate with breaking changes from tonight's nigthly
Alex Crichton [Fri, 7 Nov 2014 06:38:26 +0000 (22:38 -0800)]
Update with breaking changes from tonight's nigthly

11 years agoPass `-C prefer-dynamic` for dylib dependencies
Alex Crichton [Thu, 6 Nov 2014 16:58:01 +0000 (08:58 -0800)]
Pass `-C prefer-dynamic` for dylib dependencies

11 years agoFix a tidy issue with src/bin/cargo.rs
Alex Crichton [Thu, 6 Nov 2014 16:56:34 +0000 (08:56 -0800)]
Fix a tidy issue with src/bin/cargo.rs

11 years agoMerge branch 'args' of https://github.com/ebfe/cargo into update
Alex Crichton [Thu, 6 Nov 2014 16:50:51 +0000 (08:50 -0800)]
Merge branch 'args' of https://github.com/ebfe/cargo into update

11 years agoMerge branch 'add-did-you-mean' of https://github.com/pwoolcoc/cargo into update
Alex Crichton [Thu, 6 Nov 2014 16:49:16 +0000 (08:49 -0800)]
Merge branch 'add-did-you-mean' of https://github.com/pwoolcoc/cargo into update

11 years agoMerge branch 'fix-build-auth-test.rs' of https://github.com/pwoolcoc/cargo into update
Alex Crichton [Thu, 6 Nov 2014 16:45:58 +0000 (08:45 -0800)]
Merge branch 'fix-build-auth-test.rs' of https://github.com/pwoolcoc/cargo into update

11 years agoAdd 'did you mean...' message when a subcommand is not found.
Paul Woolcock [Thu, 6 Nov 2014 02:05:01 +0000 (21:05 -0500)]
Add 'did you mean...' message when a subcommand is not found.

11 years agoupdate rust-encoding
Steve Klabnik [Thu, 6 Nov 2014 13:19:30 +0000 (08:19 -0500)]
update rust-encoding

https://github.com/alexcrichton/toml-rs/pull/28 also needs to be in here to truly fix the build

11 years agoTcpListener::bind now takes 1 argument instead of 2
Paul Woolcock [Thu, 6 Nov 2014 13:08:38 +0000 (08:08 -0500)]
TcpListener::bind now takes 1 argument instead of 2

11 years agoFix infinite recursion when invoked without args
Michael Gehring [Thu, 6 Nov 2014 09:22:14 +0000 (10:22 +0100)]
Fix infinite recursion when invoked without args

11 years agoauto merge of #799 : alexcrichton/cargo/moar-parallel, r=brson
bors [Thu, 6 Nov 2014 00:02:30 +0000 (00:02 +0000)]
auto merge of #799 : alexcrichton/cargo/moar-parallel, r=brson

When building unit tests for a library, we don't need the library itself to be
built beforehand, so the two can be built in parallel. If the crate takes awhile
to compile, this shows some excellent wall-time speedups.

11 years agoauto merge of #804 : alexcrichton/cargo/moar-fixes, r=alexcrichton
bors [Wed, 5 Nov 2014 23:43:18 +0000 (23:43 +0000)]
auto merge of #804 : alexcrichton/cargo/moar-fixes, r=alexcrichton

Some flaky test improvements as well as some updates to the styling of the docs.

11 years agoFix up some styling on the build-script docs
Alex Crichton [Wed, 5 Nov 2014 23:14:30 +0000 (15:14 -0800)]
Fix up some styling on the build-script docs

11 years agoFix some more flaky tests
Alex Crichton [Wed, 5 Nov 2014 23:06:06 +0000 (15:06 -0800)]
Fix some more flaky tests

At the same time, also improve the deprecation message for the old build command
to be a little more descriptive about how to migrate

11 years agoauto merge of #802 : alexcrichton/cargo/issue-801, r=brson
bors [Wed, 5 Nov 2014 23:02:41 +0000 (23:02 +0000)]
auto merge of #802 : alexcrichton/cargo/issue-801, r=brson

Previously all features were traversed when adding information to the lockfile,
but the traversal forgot to add optional dependencies that did not have a
corresponding feature.

Closes #801

11 years agoauto merge of #803 : alexcrichton/cargo/fix-some-tests, r=alexcrichton
bors [Wed, 5 Nov 2014 22:35:35 +0000 (22:35 +0000)]
auto merge of #803 : alexcrichton/cargo/fix-some-tests, r=alexcrichton

Right now we're accidentally not actually leveraging this function well in some
tests due to this sequence of events:

1. The tests run at time X, building artifacts that remember the fingerprint is
   at time X.
2. The entire project is moved back one hour to (X-1).
3. A new file is created, at time X (second-level resolution on some systems).
4. On a rebuild, the maximum mtime is still X (due to the new file).

For this reason there are some more calls to move_into_the_past() to push files
back another hour after they've been created to make sure the maximum mtime is
(X-1), or something different than X.

11 years agoMore aggresively move_into_the_past for tests
Alex Crichton [Wed, 5 Nov 2014 22:00:38 +0000 (14:00 -0800)]
More aggresively move_into_the_past for tests

Right now we're accidentally not actually leveraging this function well in some
tests due to this sequence of events:

1. The tests run at time X, building artifacts that remember the fingerprint is
   at time X.
2. The entire project is moved back one hour to (X-1).
3. A new file is created, at time X (second-level resolution on some systems).
4. On a rebuild, the maximum mtime is still X (due to the new file).

For this reason there are some more calls to move_into_the_past() to push files
back another hour after they've been created to make sure the maximum mtime is
(X-1), or something different than X.

11 years agoBuild lib tests and libraries in parallel
Alex Crichton [Wed, 5 Nov 2014 03:40:06 +0000 (19:40 -0800)]
Build lib tests and libraries in parallel

When building unit tests for a library, we don't need the library itself to be
built beforehand, so the two can be built in parallel. If the crate takes awhile
to compile, this shows some excellent wall-time speedups.

11 years agoauto merge of #792 : alexcrichton/cargo/build-cmd, r=brson
bors [Wed, 5 Nov 2014 21:13:08 +0000 (21:13 +0000)]
auto merge of #792 : alexcrichton/cargo/build-cmd, r=brson

This series of commits (based on https://github.com/rust-lang/cargo/pull/763) is an implementation of the recent [Cargo RFC](https://github.com/rust-lang/rfcs/blob/master/text/0403-cargo-build-command.md). This should implement all portions of the RFC, but there's a lot so an extra set of eyes would be nice!

I haven't added documentation for it all yet, but I would like to do so before landing (starting with https://github.com/rust-lang/cargo/pull/749). Otherwise I've been migrating all of the existing cargo dependencies away from the build command to a build script, and the progress can be seen with these repositories:

* https://github.com/alexcrichton/gcc-rs
* https://github.com/alexcrichton/pkg-config-rs
* https://github.com/alexcrichton/git2-rs/tree/build-cmd
* https://github.com/alexcrichton/openssl-sys
* https://github.com/alexcrichton/flate2-rs/tree/build-cmd
* https://github.com/alexcrichton/libz-sys
* https://github.com/alexcrichton/ssh2-rs/tree/build-cmd

I haven't quite gotten around to curl just yet, but it's next on my list!

11 years agoFix custom build tests on windows
Alex Crichton [Wed, 5 Nov 2014 20:28:00 +0000 (12:28 -0800)]
Fix custom build tests on windows

11 years agoMove generated tarballs under target/package
Alex Crichton [Wed, 5 Nov 2014 02:56:08 +0000 (18:56 -0800)]
Move generated tarballs under target/package

At the same time this commit renames the `.tar.gz` extension to `.crate`. This
helps our perception on Windows as we're not trying to leave them out in the
dark, and we'd also like the ability to modify the format later in the future.

Closes #777

11 years agoBe sure to lock purely optional dependencies
Alex Crichton [Wed, 5 Nov 2014 19:13:04 +0000 (11:13 -0800)]
Be sure to lock purely optional dependencies

Previously all features were traversed when adding information to the lockfile,
but the traversal forgot to add optional dependencies that did not have a
corresponding feature.

Closes #801

11 years agoExpand the "link to system libraries" section
Alex Crichton [Tue, 4 Nov 2014 21:20:31 +0000 (13:20 -0800)]
Expand the "link to system libraries" section

11 years agoFollow through on the OUT_DIR promise for rustc compiles
Alex Crichton [Tue, 4 Nov 2014 07:20:19 +0000 (23:20 -0800)]
Follow through on the OUT_DIR promise for rustc compiles

11 years agoFix some flaky tests
Alex Crichton [Tue, 4 Nov 2014 07:20:13 +0000 (23:20 -0800)]
Fix some flaky tests

11 years agoDox fixups
Alex Crichton [Tue, 4 Nov 2014 06:45:11 +0000 (22:45 -0800)]
Dox fixups

11 years agoFix the build command passing -L/-l without links
Alex Crichton [Tue, 4 Nov 2014 00:23:42 +0000 (16:23 -0800)]
Fix the build command passing -L/-l without links

11 years agoBeef up documentation about build scripts
Alex Crichton [Mon, 3 Nov 2014 20:08:01 +0000 (12:08 -0800)]
Beef up documentation about build scripts

11 years agoUpdate documentation for new build command system
Pierre Krieger [Thu, 23 Oct 2014 10:48:01 +0000 (12:48 +0200)]
Update documentation for new build command system

11 years agoReally fix `cargo test` and fix an OUT_DIR bug
Alex Crichton [Sat, 1 Nov 2014 18:51:58 +0000 (11:51 -0700)]
Really fix `cargo test` and fix an OUT_DIR bug

Assorted bug fixes discovered while migrating packages to using this build
command infrastructure.

11 years agoAdd a test for build commands with build commands
Alex Crichton [Sat, 1 Nov 2014 02:16:39 +0000 (19:16 -0700)]
Add a test for build commands with build commands

11 years agoImplement build-dependencies
Alex Crichton [Sat, 1 Nov 2014 01:39:39 +0000 (18:39 -0700)]
Implement build-dependencies

This adds a flavor of Dependency for build dependencies. Build dependencies are
only ever used when building build commands themselves.

11 years agoAdd tests for other cargo cmds + -L propagation
Alex Crichton [Sat, 1 Nov 2014 00:36:48 +0000 (17:36 -0700)]
Add tests for other cargo cmds + -L propagation

11 years agoEnsure fresh build commands populate build info
Alex Crichton [Fri, 31 Oct 2014 23:20:13 +0000 (16:20 -0700)]
Ensure fresh build commands populate build info

Whenever a build command is fresh, we need to be sure to propagate its build
information upwards from the cache stored on disk.

11 years agoRefine the dependency graph for build scripts
Alex Crichton [Fri, 31 Oct 2014 22:51:13 +0000 (15:51 -0700)]
Refine the dependency graph for build scripts

Build scripts can immediately start building as soon as all build dependencies
are available and not need to wait for normal dependencies. This commit also
includes a number of refactorings and reorganizations to tidy up how build
scripts are processed.

One primary piece of state introduced in this commit is a shared Arc<Mutex<T>>
which contains information about the processed build scripts as compilation
continues. Compilation commands will draw information from this state and build
scripts will feed information back into this state to ensure it's up to date.

11 years agoImplement overrides via local cargo configuration
Alex Crichton [Fri, 31 Oct 2014 19:25:40 +0000 (12:25 -0700)]
Implement overrides via local cargo configuration

This is an implementation of overriding native dependencies and passing
aribtrary metadata and such.

11 years agoFix lines_match test for matching process output
Alex Crichton [Fri, 31 Oct 2014 18:17:29 +0000 (11:17 -0700)]
Fix lines_match test for matching process output

11 years agoImplement the `links` manifest key
Alex Crichton [Fri, 31 Oct 2014 17:49:04 +0000 (10:49 -0700)]
Implement the `links` manifest key

This commit adds the `links` manifest key as a string of a C library which is
being linked to. This is passed as an argument to the build command when not
overridden. The implementation of overrides will come soon!

11 years agoTweak tests that check whether the build script is being run
Pierre Krieger [Wed, 29 Oct 2014 10:23:52 +0000 (11:23 +0100)]
Tweak tests that check whether the build script is being run

11 years agoMove custom-build-related code in its own module
Pierre Krieger [Tue, 28 Oct 2014 13:22:02 +0000 (14:22 +0100)]
Move custom-build-related code in its own module

11 years agoAddress minor issues
Pierre Krieger [Tue, 28 Oct 2014 09:00:25 +0000 (10:00 +0100)]
Address minor issues